package com.mdd.common.entity.agreement;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mdd.common.base.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 扣款/退款记录
 * &#064;TableName  alipay_trade_pay_refund_record
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("alipay_trade_pay_refund_record")
public class AlipayTradePayRefundRecord extends BaseEntity {
    /**
     * 编号
     */
    @TableId(value="id", type= IdType.AUTO)
    private Long id;

    /**
     * 商户订单号。 订单支付时传入的商户订单号，商家自定义且保证商家系统中唯一。与支付宝交易号 trade_no 不能同时为空。
     */
    private String outTradeNo;

    /**
     * 支付宝交易号。 和商户订单号 out_trade_no 不能同时为空，两者同时存在时，优先取值trade_no
     */
    private String tradeNo;

    /**
     * 退款金额。 需要退款的金额，该金额不能大于订单金额，单位为元，支持两位小数。 注：如果正向交易使用了营销，该退款金额包含营销金额，支付宝会按业务规则分配营销和买家自有资金分别退多少，默认优先退买家的自有资金。如交易总金额100元，用户支付时使用了80元自有资金和20元无资金流的营销券，商家实际收款80元。如果首次请求退款60元，则60元全部从商家收款资金扣除退回给用户自有资产；如果再请求退款40元，则从商家收款资金扣除20元退回用户资产以及把20元的营销券退回给用户（券是否可再使用取决于券的规则配置）。
     */
    private String refundAmount;

    /**
     * 退款原因说明。 商家自定义，将在会在商户和用户的pc退款账单详情中展示
     */
    private String refundReason;

    /**
     * 退款请求号。 标识一次退款请求，需要保证在交易号下唯一，如需部分退款，则此参数必传。 注：针对同一次退款请求，如果调用接口失败或异常了，重试时需要保证退款请求号不能变更，防止该笔交易重复退款。支付宝会保证同样的退款请求号多次请求只会退一次。
     */
    private String outRequestNo;

    /**
     * 退款包含的商品列表信息
     * goods_id	String	必选	32
     * 商品编号。 对应支付时传入的goods_id
     * apple-01
     * refund_amount	Price	必选	9
     * 该商品的退款总金额，单位为元
     * 19.50
     * out_item_id	String	可选	64
     * 商家侧小程序商品ID，具体使用方式请参考：<a href="https://opendocs.alipay.com/pre-open/06uila?pathHash=87297d0a">...</a>
     * outItem_01
     * out_sku_id	String	可选	64
     * 商家侧小程序商品sku ID，具体使用方式请参考：<a href="https://opendocs.alipay.com/pre-open/06uila?pathHash=87297d0a">...</a>
     */
    private String refundGoodsDetail;

    /**
     * 退分账明细信息。 注： 1.当面付且非直付通模式无需传入退分账明细，系统自动按退款金额与订单金额的比率，从收款方和分账收入方退款，不支持指定退款金额与退款方。 2.直付通模式，电脑网站支付，手机 APP 支付，手机网站支付产品，须在退款请求中明确是否退分账，从哪个分账收入方退，退多少分账金额；如不明确，默认从收款方退款，收款方余额不足退款失败。不支持系统按比率退款。
     * royalty_type	String	可选	32
     * 分账类型.
     * 枚举值
     * 分账: transfer
     * 营销补差: replenish
     * 注意事项
     * 为空默认为分账transfer;
     * transfer
     * trans_out	String	可选	16
     * 支出方账户。如果支出方账户类型为userId，本参数为支出方的支付宝账号对应的支付宝唯一用户号，以2088开头的纯16位数字；如果支出方类型为loginName，本参数为支出方的支付宝登录号。 泛金融类商户分账时，该字段不要上送。
     * 2088101126765726
     * trans_out_type	String	可选	64
     * 支出方账户类型。
     * 枚举值
     * 支付宝账号对应的支付宝唯一用户号: userId
     * 支付宝登录号: loginName
     * 注意事项
     * 泛金融类商户分账时，该字段不要上送。
     * userId
     * trans_in_type	String	可选	64
     * 收入方账户类型。
     * 枚举值
     * 支付宝账号对应的支付宝唯一用户号: userId
     * 支付宝登录号: loginName
     * 卡编号: cardAliasNo
     * userId
     * trans_in	String	必选	16
     * 收入方账户。如果收入方账户类型为userId，本参数为收入方的支付宝账号对应的支付宝唯一用户号，以2088开头的纯16位数字；如果收入方类型为cardAliasNo，本参数为收入方在支付宝绑定的卡编号；如果收入方类型为loginName，本参数为收入方的支付宝登录号；
     * 2088101126708402
     * amount	Price	可选	9
     * 分账的金额，单位为元
     * 0.1
     * desc	String	可选	1000
     * 分账描述
     * 分账给2088101126708402
     * royalty_scene	String	可选	256
     * 可选值：达人佣金、平台服务费、技术服务费、其他
     * 达人佣金
     * trans_in_
     */
    private String refundRoyaltyParameters;

    /**
     * 查询选项。 商户通过上送该参数来定制同步需要额外返回的信息字段，数组格式。支持：refund_detail_item_list：退款使用的资金渠道；deposit_back_info：触发银行卡冲退信息通知；
     * 枚举值
     * 本次退款使用的资金渠道: refund_detail_item_list
     * 银行卡冲退信息: deposit_back_info
     */
    private String queryOptions;

    /**
     * 用户订单编号
     */
    private Long orderId;

    /**
     * 操作类型：1、支付 2、退款
     */
    private Integer type;

    private static final long serialVersionUID = 1L;
}
